const express = require('express');
const mysql = require('mysql');
const tools = require('../../lib/tools.js');
const pathLib = require('path');
const fsLib = require('fs');

/**
 * custom管理路由
 */
module.exports = function() {
    let router = express.Router();

    // 定义查询数据库池 
    let db = mysql.createPool({
        host:'localhost',
        user:'root',
        password:'admin',
        database:'blogapp'
    })
    // custom数据处理
    router.get('/', (req, res) => {
        switch (req.query.act) {
            case 'mod':
                db.query(`SELECT * FROM custom_evaluation_table WHERE ID=${req.query.id}`,
                (err, data) =>{
                    if (err) {
                        console.error(err);
                        res.status(500).send('数据库错误。').end();
                    } else if(data.length == 0) {
                        res.status(404).send('查无此数据。').end();
                    } else{
                        // 查询custom数据
                        db.query(`SELECT * FROM custom_evaluation_table`, (err, custom_data) => {
                            if (err) {
                                res.status(500).send('数据库错误。').end();
                            } else {
                                // 渲染并传参
                                res.render('./admin/custom.ejs',{custom_data,mod_data:data[0]});
                            }
                        });
                    }
                })
                break;
            case 'del':
                db.query(`SELECT * FROM custom_evaluation_table WHERE ID=${req.query.id}`,
                (err, data) =>{
                    if (err) {
                        console.error(err);
                        res.status(500).send('数据库错误。').end();
                    } else if(data.length == 0) {
                        res.status(404).send('查无此数据。').end();
                    } else{
                        fsLib.unlink('./static/upload/'+data[0].src, (err) => {
                            if (err) {
                                console.log(err);
                                res.status(400).send('文件操作失败。').end();
                            } else {
                                // 删除所指定数据
                                db.query(`DELETE FROM custom_evaluation_table WHERE ID=('${req.query.id}')`, 
                                (err) => {
                                    if (err) {
                                        console.error(err);
                                        res.status(500).send('数据库错误。').end();
                                    } else {
                                        res.redirect('/admin/custom');
                                    }
                                });
                            }
                        })
                        
                    }
                })
                break;
        
            default:
                // 查询custom数据
                db.query(`SELECT * FROM custom_evaluation_table`, (err, custom_data) => {
                    if (err) {
                        res.status(500).send('数据库错误。').end();
                    } else {
                        // 渲染并传参
                        res.render('./admin/custom.ejs',{custom_data});
                    }
                });
                break;
        }
    });
    router.post('/', (req, res, next) => {
        // 获取到post数据
        console.log(req.body,req.files);
        
        const bt标题 = req.body.标题;
        const jj简介 = req.body.简介;
        const wj文件 = req.files[0];
        

        if (!bt标题 || !jj简介) {
            res.status(400).send('参数不合法。').end();
            console.log(wj文件.originalname);
            if (wj文件) {
                fsLib.unlink(wj文件.path, (err) =>{
                    if (err) {
                        console.log(err);
                    }
                });
            };
        } else if (wj文件) { //如果有 标题、有 简介、还有 文件
                // 获取图片扩展名
            const ext = pathLib.parse(wj文件.originalname).ext;
            // 得到带扩展名的图片地址
            const tx头像 = wj文件.filename + ext;
            // 将已上传的图片改名
            fsLib.rename(wj文件.path, wj文件.path + ext, (err) => {
                if (err) {
                    console.log(err);
                    res.status(404).send('文件操作失败。').end();
                } else {
                    // 要修改还是要添加
                    if (req.body.mod_id) {
                        // 查找到要修改的数据
                        db.query(`SELECT * FROM custom_evaluation_table WHERE ID=${req.body.mod_id}`,
                        (err, data) =>{
                            if (err) {
                                console.error(err);
                                res.status(500).send('数据库错误。').end();
                            } else if(data.length == 0) {
                                res.status(404).send('查无此数据。').end();
                            } else{
                                // 根据数据删除文件（头像）
                                fsLib.unlink('./static/upload/'+data[0].src, (err) => {
                                    if (err) {
                                        console.log(err);
                                        res.status(400).send('文件操作失败。').end();
                                    } else {
                                          // 修改（更新）数据到数据库
                                        db.query(`UPDATE custom_evaluation_table SET \
                                            title='${bt标题}',\
                                            description='${jj简介}',\
                                            src='${tx头像}' \
                                            WHERE ID=${req.body.mod_id}`,
                                        (err, data) => {
                                            if (err) {
                                                console.log(err);
                                                res.status(500).send('数据库错误。').end();
                                            } else {
                                                res.redirect('/admin/custom');
                                            }
                                        });
                                    }
                                })
                                
                            }
                        })
                      
                    } else {
                        // 添加（插入）数据到数据库
                        db.query(`INSERT INTO custom_evaluation_table (title,description,src) VALUES('${bt标题}','${jj简介}','${tx头像}')`, 
                        (err, data) => {
                            if (err) {
                                console.error(err);
                                res.status(500).send('数据库错误。').end();
                            } else {
                                // 跳转（重定向）到原地址
                                res.redirect('/admin/custom');
                            }
                        });
                    }
                }
            });
        }else{ // 如果只有标题简介，但没有文件
            // 判断是否是要修改
            if (req.body.mod_id) {
                // 修改（更新）数据到数据库
                db.query(`UPDATE custom_evaluation_table SET \
                    title='${bt标题}',\
                    description='${jj简介}' \
                    WHERE ID=${req.body.mod_id}`,
                (err, data) => {
                    if (err) {
                        console.log(err);
                        res.status(500).send('数据库错误。').end();
                    } else {
                        res.redirect('/admin/custom');
                    }
                });
            } else { //不是要修改，而且还没有文件
                res.status(400).send('参数不合法。').end();
            }
        }
    });
        
    return router;
}